#pragma once

namespace Physics
{
	class IPhysicsObject
	{
	private:
		//DATA MEMBERS...
		static int objCount;					//D002: count of all objs in Game World
	protected:
		int objID;								//D003: unique objID for all objects created	
		virtual void decrement_ObjectCount();	//M003: Decrement count of objs in Game World

	public:
		IPhysicsObject() { /*EMPTY CONSTRUCTOR*/ }			//C001: DEFAULT Constructor
		virtual ~IPhysicsObject() { /*EMPTY DESTRUCTOR*/ }	//C002: Destructor 

		virtual const int getGlobalObjsCount();				//M002: Return count of objs in Game World
		
		virtual const int getID() const;					//M004: Getter Instance ObjID
		virtual void setID( int newID );					//M005: Getter Instance ObjID

		virtual void Info() = 0;							//M006: Override in concrete classes
	};
} /* NAMESPACE */
